package day06;
//方法的演示
public class MethodDemo {
    public static void main(String[] args) {
        say();

        //sayHi(); //编译错误，有参则必须传参
        //sayHi(250); //编译错误，参数类型必须匹配
        sayHi("zhangsan"); //String name="zhangsan" //实参---调用方法时的参数
        sayHi("lisi"); //String name="lisi" //实参

        sayHello("zhangsan",25); //实参
        sayHello("lisi",65); //实参

        double a = getNum(); //getNum()的值就是return后的那个数
        System.out.println(a); //8.88---模拟对返回值的后续操作
        System.out.println(getNum()); //返回值为基本类型时可以这样调

        int b = plus(5,6);
        System.out.println(b); //11---模拟对返回值的后续操作
        int m=5,n=6;
        int c = plus(m,n); //传的是m,n里面的数
        System.out.println(c); //11---模拟对返回值的后续操作

        int[] d = testArray(5,20);
        System.out.println("数组的长度为："+d.length); //10---模拟对返回值的后续操作
        System.out.println("数组的一个元素为："+d[0]); //随机数---模拟对返回值的后续操作
        for(int i=0;i<d.length;i++){ //---模拟对返回值的后续操作
            System.out.println(d[i]);
        }

        aMethod(); //111,333,222,444
        System.out.println(444);
    }

    //嵌套调用的演示
    public static void aMethod(){
        System.out.println(111);
        bMethod(); //嵌套调用方法
        System.out.println(222);
    }

    public static void bMethod(){
        System.out.println(333);
    }

    //有参有返回值
    public static int[] testArray(int len,int max){
        int[] arr = new int[len];
        for(int i=0;i<arr.length;i++){
            arr[i] = (int)(Math.random()*(max+1)); //如果不加1则生成的随机数不包含本身max
        }
        return arr;
    }

    //有参有返回值
    public static int plus(int num1,int num2){
        int num = num1+num2;
        return num; //返回的是num里面的那个数
        //return num1+num2; //返回的值num1与num2的和
    }

    //无参有返回值
    public static double getNum(){
        //在有返回值的方法中，必须通过return来返回数据
        //return; //编译错误，return后必须跟一个数据
        //return "abc"; //编译错误，return后数据的类型必须与返回值类型匹配
        return 8.88; //1)结束方法的执行 2)返回结果给调用方
    }

    //有参无返回值
    public static void sayHello(String name,int age){ //形参---定义方法时的参数
        if(age>60){ //在某种特定条件下，提前结束方法
            return; //结束方法的执行
        }
        System.out.println("大家好，我叫"+name+",今年"+age+"岁了");
    }

    //有参无返回值
    public static void sayHi(String name){ //形参
        System.out.println("大家好，我叫"+name+"，今年39岁了");
    }

    //无参无返回值
    public static void say(){
        System.out.println("大家好，我叫WKJ，今年39岁了");
    }
}
